JSXとHaxeとGWTそれぞれのJavaScriptの使い方
概要
JavaScriptみたいなダメ言語触ってちゃダメです。
もうちょい高度な事を簡単にできるように、変換系の言語使いましょう。
っていうなかで、JSXとHaxeとGWTそれぞれを、弊社内でぶつくさ言いながら触ってみてる
2人で愚痴りながら、それぞれの違いとか特質とか書いてみてる。
重点として、global namespace pollutionと戦えるかどうか、というのが注目すべき点になります。
JSX
http://d.hatena.ne.jp/nishiohirokazu/20120531/1338456208
を参考に。
var jQuery = js.global["$"] as function(:string):variant;
これって、
既にブラウザに読み込んでるjQueryを読み込むって事になってる。
名前空間は、、?
・JSの読み込み方そのまま、<Script>タグで読み込まれている必要がある
・JSを文字列を介して読み出すことが出来る
・JSをオブジェクトとしてJSX内に初期化する方法自体は無い(パッケージラッピングなどが出来ない)
ので、global namespace pollutionと戦えない。
この辺は、ネットワークかフォルダから読む方法が無いと、話にならんぞ。
きっとあるんでしょう。、、、みつけらんないんだけど。
Haxe
http://blog.romatica.com/2012/01/09/haxe_jquery/
を参考に。
って調べてみたら、やたらとHaxeラッピングされているJavaScriptライブラリが多い。
jQuery、ProcessingJS、linq、、、linq!!? (二度見
資産多いねー。
で、肝心のHaxeでjQuery、上記ライブラリの中身を追う事で調べてみ
調べてみ、、、てるとこ!! 読み方何通りもあるわこれ。
・コンパイル時に組み込んでしまう事で、global namespace pollutionと戦える。
http://stackoverflow.com/questions/3828423/haxe-for-javascript-without-global-namespace-pollution
・<script>タグからの読み込みも可能
・ライブラリを介してのオブジェクトとしてのJS読み込みが可能(書き途中
GWT
オワコンなので特に語る必要は無いが、一応。
・<script>タグからの読み込みが可能
・JSNIがあるので、JavaとJSのあいだを型をつかったまま行ったり来たりできる。
JSNI内でjsを読み込む事で、global namespace pollutionと戦える。
・GWT独自のJS読み込みスロットあり。Script読み込みを書く場所が限定される。
・JSに対して、Java由来のガッチガチの名前空間パッケージラッピングが可能
static,public,private final ほか
雑なまとめ
JSの読み込み方一つで、いろんなバリエーションがあるんですね!
個人的には名前空間に配慮できるものをきちんと使うのが、クソJSをマジックハンド介してとはいえ
触る上での、最低限ジェントルマン的な嗜みかなーと思います。
参考(にしてる途中の何か)
Haxe、2012/5時点でのFlashDevelopとの連携まとめ
http://robertbak.com/wordpress/2012/05/getting-started-with-haxe-for-javascript/
Haxe、JSからの値取得、xml読み込み
http://www.youtube.com/watch?v=KlJ4VSifpsY
Haxe、っていうかFlashとかとも連携できる(4年前、、、!!)
http://trac.puremvc.org/Demo_Haxe_JS_Flash_MultiplatformComm
Haxe、incrootっていう修飾子でjs読み込めるcompilerっぽいの。
http://code.google.com/p/haxetacy/wiki/postcompiler
Haxeの資産すげーーーーー。。